package ar.edu.utn.frba.disenio.arena;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;
import org.uqbar.commons.model.UserException;

import ar.edu.utn.frba.disenio.Asiento;
import ar.edu.utn.frba.disenio.Usuario;
import ar.edu.utn.frba.disenio.Vuelo;

@SuppressWarnings("serial")
public class SobreReservaWindow extends Window<Object>{
    
	private Asiento asientoSeleccionado;
	
	public SobreReservaWindow(WindowOwner parent, Asiento asiento) {
		super(parent, null);
        this.setTitle("Aterrizar.com");
        this.asientoSeleccionado = asiento;
	}

	
    @Override
    public void createContents(Panel mainPanel) 
    {
        Panel panel = new Panel(mainPanel);
        
        new Label(panel)
        .setText("El asiento " + this.asientoSeleccionado.getCodigo() +
        		 " ya se encuentra reservado.\n¿Que desea hacer?")
        .setFontSize(11)
        .setHeigth(40);
        
        Panel actionPanel = new Panel(mainPanel);
        actionPanel.setLayout(new HorizontalLayout());
        
        new Button(actionPanel)
        .setCaption("Sobrereservar")
        .onClick(new MessageSend(this,"sobrereservar"));
        
        new Button(actionPanel)
        .setCaption("Seguir Buscando")
        .onClick(new MessageSend(this,"close"));
    }
    
    public void sobrereservar()
    {
    	try {
			Usuario usuario = AterrizarApplication.getUsuarioLogueado();
			
			Vuelo vuelo = new Vuelo();
			vuelo.addAsiento(asientoSeleccionado);
			
			usuario.sobrereservarVuelo(vuelo);
			
			new OkWindow(this.getOwner(), 
					"El asiento " + this.asientoSeleccionado.getCodigo() + 
					" ha sido sobrereservado exitosamente.")
			.open();
			this.close();
    	}
		catch (UserException ex) 
		{
			new ErrorWindow(this.getOwner(), "sobrereservar un asiento", ex.getMessage())
			.open();
		}
    }
}

